home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekikoh Dennoh Club 5
/
Gekikoh Dennoh Club Vol. 5 (Japan).7z
/
Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin
/
internet
/
webx
/
webxp040.lzh
/
Source
/
compress.s
next >
Wrap
Text File
|
1998-09-27
|
9KB
|
540 lines
* âCâüü[âW1/2ê│Åk
.xdef _CompressImageHS
.xdef _CompressImageHQ
.xdef _CompressImage256HS
.xdef _CompressImage256HQ
.xdef _NonCompressImage256
.text
.even
_CompressImageHS: * 65536 ÉFé╫é╜âCâüü[âW 1/2 ê│Åkâïü[â`âôüiìéæ¼üEÆßëµÄ┐ö┼üj
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
movea.l 8(a6),a1 * a1.l = ô]æùɵ
movea.l 12(a6),a0 * a0.l = ô]æùî│
move.l 20(a6),d7 * d7.w = y
lsr.w d7
subq.w #1,d7 * d7.w = y âïü[âvë±Éö
bcs CompressImageHS_y1dot
move.l 16(a6),d0 * d0.w = x
move.w d0,d1
add.w d1,d1
movea.w d1,a5
btst.l #0,d0
beq @f
addq.w #2,a5
@@: * a5.w = ăé╠ y é╔ìsé¡Ä₧ a0.l é╔æ½é╖Æl
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImageHS_x1dot
move.w d6,a4 * a4.w = x âïü[âvë±Éö
1:
move.w a4,d6
2:
move.w (a0)+,(a1)+
addq.w #2,a0
dbra d6,2b
adda.w a5,a0
dbra d7,1b
CompressImageHS_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
CompressImageHS_y1dot: * y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.l 16(a6),d0 * d0.w = x
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImageHS_xy1dot
2:
move.w (a0)+,(a1)+
addq.w #2,a0
dbra d6,2b
bra CompressImageHS_rts
CompressImageHS_x1dot: * x é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w d0,a5
adda.w a5,a5
1: move.w (a0),(a1)+
adda.w a5,a0
dbra d7,1b
bra CompressImageHS_rts
CompressImageHS_xy1dot: * x ïyé╤ y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w (a0),(a1)+
bra CompressImageHS_rts
****************************************************************
_CompressImageHQ: * 65536 ÉFé╫é╜âCâüü[âW 1/2 ê│Åkâïü[â`âôüiÆßæ¼üEìéëµÄ┐ö┼üj
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
movea.l 8(a6),a1 * a1.l = ô]æùɵ
movea.l 12(a6),a0 * a0.l = ô]æùî│
move.l 20(a6),d7 * d7.w = y
lsr.w d7
subq.w #1,d7 * d7.w = y âïü[âvë±Éö
bcs CompressImageHQ_y1dot
move.l 16(a6),d0 * d0.w = x
move.w d0,d1
add.w d1,d1
movea.w d1,a5
btst.l #0,d0
beq @f
addq.w #2,a5
@@: * a5.w = ăé╠ y é╔ìsé¡Ä₧ a0.l é╔æ½é╖Æl
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImageHQ_x1dot
move.w d6,a4 * a4.w = x âïü[âvë±Éö
move.w d0,d4
add.w d4,d4
move.w d4,a3 * a3.w = x*2
move.w #%1111100000111110,d4 * d4.w = ÆΦÉö
move.w #%0000011111000000,d5
1:
move.w a4,d6
2:
move.w (a0),d0
move.w d0,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
lsr.w d0
lsr.w d1
move.w 2(a0),d2
move.w d2,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
lsr.w d2
lsr.w d3
add.w d2,d0
add.w d3,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
swap.w d0 * ÅπéQâhâbâgé╠ò╜ï╧îïë╩é≡
swap.w d1 * êΩÄ₧ôIé╔æ▐ö≡
move.w (a3.w,a0),d0
move.w d0,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
lsr.w d0
lsr.w d1
move.w 2(a3.w,a0),d2
move.w d2,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
lsr.w d2
lsr.w d3
add.w d0,d2
add.w d1,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
swap.w d0
swap.w d1
lsr.w d0
lsr.w d1
lsr.w d2
lsr.w d3
add.w d2,d0
add.w d3,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
or.w d1,d0
move.w d0,(a1)+
addq.w #4,a0
.if 0
* x ò√îⁿé╠é▌ò╜ï╧é≡ĵéΘ
move.w (a0),d0
move.w d0,d1
andi.w #%1111100000111110,d0
andi.w #%0000011111000000,d1
lsr.w d0
lsr.w d1
move.w 2(a0),d2
move.w d2,d3
andi.w #%1111100000111110,d2
andi.w #%0000011111000000,d3
lsr.w d2
lsr.w d3
add.w d2,d0
add.w d3,d1
andi.w #%1111100000111110,d0
andi.w #%0000011111000000,d1
or.w d1,d0
move.w d0,(a1)+
addq.w #4,a0
.endif
dbra d6,2b
adda.w a5,a0
dbra d7,1b
CompressImageHQ_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
CompressImageHQ_y1dot: * y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.l 16(a6),d0 * d0.w = x
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImageHQ_xy1dot
2:
move.w (a0)+,(a1)+
addq.w #2,a0
dbra d6,2b
bra CompressImageHQ_rts
CompressImageHQ_x1dot: * x é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w d0,a5
adda.w a5,a5
1: move.w (a0),(a1)+
adda.w a5,a0
dbra d7,1b
bra CompressImageHQ_rts
CompressImageHQ_xy1dot: * x ïyé╤ y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w (a0),(a1)+
bra CompressImageHQ_rts
****************************************************************
_CompressImage256HS: * 256 ÉF->65536 ÉFò╧è╖òté½
* é╫é╜âCâüü[âW 1/2 ê│Åkâïü[â`âôüiìéæ¼üEÆßëµÄ┐ö┼üj
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
movea.l 8(a6),a1 * a1.l = ô]æùɵ
movea.l 12(a6),a0 * a0.l = ô]æùî│
movea.l 16(a6),a2 * a2.l = âpâîâbâgâoâbâtâ@
move.l 24(a6),d7 * d7.w = y
lsr.w d7
subq.w #1,d7 * d7.w = y âïü[âvë±Éö
bcs CompressImage256HS_y1dot
move.l 20(a6),d0 * d0.w = x
move.w d0,a5
btst.l #0,d0
beq @f
addq.w #1,a5
@@: * a5.w = ăé╠ y é╔ìsé¡Ä₧ a0.l é╔æ½é╖Æl
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImage256HS_x1dot
move.w d6,a4 * a4.w = x âïü[âvë±Éö
move.w d0,a3 * a3.w = x
1:
move.w a4,d6
2:
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
addq.w #2,a0
dbra d6,2b
adda.w a5,a0
dbra d7,1b
CompressImage256HS_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
CompressImage256HS_y1dot: * y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.l 20(a6),d0 * d0.w = x
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImage256HS_xy1dot
2:
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
addq.w #2,a0
dbra d6,2b
bra CompressImage256HS_rts
CompressImage256HS_x1dot: * x é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w d0,a5
adda.w a5,a5
1:
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
adda.w a5,a0
dbra d7,1b
bra CompressImage256HS_rts
CompressImage256HS_xy1dot: * x ïyé╤ y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
bra CompressImage256HS_rts
****************************************************************
_CompressImage256HQ: * 256 ÉF->65536 ÉFò╧è╖òté½
* é╫é╜âCâüü[âW 1/2 ê│Åkâïü[â`âôüiÆßæ¼üEìéëµÄ┐ö┼üj
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
movea.l 8(a6),a1 * a1.l = ô]æùɵ
movea.l 12(a6),a0 * a0.l = ô]æùî│
movea.l 16(a6),a2 * a2.l = âpâîâbâgâoâbâtâ@
move.l 24(a6),d7 * d7.w = y
lsr.w d7
subq.w #1,d7 * d7.w = y âïü[âvë±Éö
bcs CompressImage256HQ_y1dot
move.l 20(a6),d0 * d0.w = x
move.w d0,a5
btst.l #0,d0
beq @f
addq.w #1,a5
@@: * a5.w = ăé╠ y é╔ìsé¡Ä₧ a0.l é╔æ½é╖Æl
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImage256HQ_x1dot
move.w d6,a4 * a4.w = x âïü[âvë±Éö
move.w d0,a3 * a3.w = x
move.w #%1111100000111110,d4 * d4.w = ÆΦÉö
move.w #%0000011111000000,d5 * d4.w = ÆΦÉö
1:
move.w a4,d6
2:
clr.w d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),d0
move.w d0,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
lsr.w d0
lsr.w d1
clr.w d2
move.b 1(a0),d2
add.w d2,d2
move.w (d2.w,a2),d2
move.w d2,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
lsr.w d2
lsr.w d3
add.w d2,d0
add.w d3,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
swap.w d0 * ÅπéQâhâbâgé╠ò╜ï╧îïë╩é≡
swap.w d1 * êΩÄ₧ôIé╔æ▐ö≡
clr.w d0
move.b (a3.w,a0),d0
add.w d0,d0
move.w (d0.w,a2),d0
move.w d0,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
lsr.w d0
lsr.w d1
clr.w d2
move.b 1(a3.w,a0),d2
add.w d2,d2
move.w (d2.w,a2),d2
move.w d2,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
lsr.w d2
lsr.w d3
add.w d0,d2
add.w d1,d3
* andi.w #%1111100000111110,d2
and.w d4,d2
* andi.w #%0000011111000000,d3
and.w d5,d3
swap.w d0
swap.w d1
lsr.w d0
lsr.w d1
lsr.w d2
lsr.w d3
add.w d2,d0
add.w d3,d1
* andi.w #%1111100000111110,d0
and.w d4,d0
* andi.w #%0000011111000000,d1
and.w d5,d1
or.w d1,d0
move.w d0,(a1)+
addq.w #2,a0
dbra d6,2b
adda.w a5,a0
dbra d7,1b
CompressImage256HQ_rts:
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts
CompressImage256HQ_y1dot: * y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.l 20(a6),d0 * d0.w = x
move.w d0,d6
lsr.w d6
subq.w #1,d6
bcs CompressImage256HQ_xy1dot
2:
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
addq.w #2,a0
dbra d6,2b
bra CompressImage256HQ_rts
CompressImage256HQ_x1dot: * x é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
move.w d0,a5
adda.w a5,a5
1:
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
adda.w a5,a0
dbra d7,1b
bra CompressImage256HQ_rts
CompressImage256HQ_xy1dot: * x ïyé╤ y é¬ê│ÅkîπéPâhâbâgé╔é╚éΘÅΩìç
moveq.l #0,d0
move.b (a0),d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
bra CompressImage256HQ_rts
****************************************************************
_NonCompressImage256: * 256 ÉF->65536 ÉFò╧è╖üEê│Åké╚é╡
link a6,#0
movem.l d1-d7/a0-a5,-(sp)
movea.l 8(a6),a1 * a1.l = ô]æùɵ
movea.l 12(a6),a0 * a0.l = ô]æùî│
movea.l 16(a6),a2 * a2.l = âpâîâbâgâoâbâtâ@
move.l 24(a6),d7 * d7.w = y
subq.w #1,d7 * d7.w = y âïü[âvë±Éö
move.l 20(a6),a4 * a4.w = x
subq.w #1,a4
1:
move.w a4,d6
2:
moveq.l #0,d0
move.b (a0)+,d0
add.w d0,d0
move.w (d0.w,a2),(a1)+
dbra d6,2b
dbra d7,1b
movem.l (sp)+,d1-d7/a0-a5
unlk a6
rts